package com.ehome.poct.core.dao.mybatis;

import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ehome.mybatisplus.support.AbstractCrudRepository;
import com.ehome.paymentcenter.api.pay.constant.PayStatus;
import com.ehome.poct.core.api.dto.check.gold.TestReportPoctDTO;
import com.ehome.poct.core.api.dto.report.TestReportConfigDTO;
import com.ehome.poct.core.dao.entity.check.TestReportPoctDO;
import com.ehome.poct.core.dao.mybatis.mapper.TestReportPoctMapper;
import com.ehome.poct.core.repository.TestReportPoctRepository;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Repository;

import java.time.LocalDateTime;

import java.util.List;

/**
 * 检测报告 金标仪单项报告RepositoryImpl
 *
 * @author muqiu
 * @Date 2022-03-19 16:20
 */
@Repository
@AllArgsConstructor
public class TestReportPoctRepositoryImpl extends AbstractCrudRepository<TestReportPoctDO, TestReportPoctDTO> implements TestReportPoctRepository {
    private final TestReportPoctMapper mapper;

    @Override
    public void updateStatus(String orderNo, Integer status) {
        mapper.update(null, Wrappers.<TestReportPoctDO>lambdaUpdate()
                .eq(TestReportPoctDO::getPayOrderNo, orderNo).set(TestReportPoctDO::getPayStatus, status));
    }

    @Override
    public void delByOrderNo(String orderNo) {
        mapper.update(null,Wrappers.<TestReportPoctDO>lambdaUpdate()
                .eq(TestReportPoctDO::getPayOrderNo, orderNo)
                .set(TestReportPoctDO::getPayStatus, 30)
                .set(TestReportPoctDO::getUpdateTime, LocalDateTime.now()));
//        mapper.delete(Wrappers.<TestReportPoctDO>lambdaQuery().eq(TestReportPoctDO::getPayOrderNo, orderNo));
    }

    @Override
    public void updateSigReportStatus(String orderNo) {
        mapper.update(null,Wrappers.<TestReportPoctDO>lambdaUpdate().set(TestReportPoctDO::getPayStatus, PayStatus.SUCCESS.getStatus()).eq(TestReportPoctDO::getPayOrderNo,orderNo));
    }

    @Override
    public List<TestReportPoctDTO> getSigReport(List<Long> longs) {
        return BeanUtil.copyToList(mapper.selectBatchIds(longs),TestReportPoctDTO.class);
    }

    @Override
    public void reportConfigJby(TestReportConfigDTO testReportConfigDTO) {
        if(testReportConfigDTO.getDisabled() == 0){
            mapper.reportConfigJby(testReportConfigDTO);
            mapper.delete(Wrappers.<TestReportPoctDO>lambdaQuery().eq(TestReportPoctDO::getClinicId,testReportConfigDTO.getClinicId())
                    .ge(testReportConfigDTO.getStartTime() != null,TestReportPoctDO::getCreateTime,testReportConfigDTO.getStartTime())
                    .le(testReportConfigDTO.getEndTime() != null,TestReportPoctDO::getCreateTime,testReportConfigDTO.getEndTime()));
        }else {
            mapper.reportConfigJby(testReportConfigDTO);
        }
    }
}
